package org.sistema.pgfx.facade;

import java.util.List;

import javax.ejb.Remote;

import pgfx.general.entidades.Funcionalidad;
import pgfx.general.entidades.FuncionalidadEvento;
import pgfx.general.entidades.FuncionalidadEventoPK;
import pgfx.general.entidades.PersonaUsuario;
import pgfx.utils.exception.ClaveVioladaException;

import com.pgfx.ejbModule.facade.BaseFacadeRemote;

@Remote
public interface FuncionalidadFacadeRemote extends
		BaseFacadeRemote<Funcionalidad> {

	public Funcionalidad actualizar(Funcionalidad funcionalidad, List<FuncionalidadEvento> funcionalidadEvento) throws Exception;

	public List<Funcionalidad> crearListaEliminar(Funcionalidad funcionalidad) throws Exception;

	public void eliminarFuncionalidad(Funcionalidad funcionalidad) throws Exception;

	public List<Funcionalidad> treeFuncionalidadesPadre(Funcionalidad func) throws Exception;

	public List<Funcionalidad> treeFuncionalidades(Funcionalidad func, String padre) throws Exception;


	public List<Funcionalidad> treeFuncionalidades(Funcionalidad func, String padre, PersonaUsuario usuario) throws Exception;

	public List<FuncionalidadEvento> getEventos(Funcionalidad funcionalidad) throws Exception;

	public List<FuncionalidadEvento> getEventos(Funcionalidad funcionalidad, Integer form, PersonaUsuario usuario) throws Exception;

	public List<FuncionalidadEvento> getEventosByTag(Funcionalidad funcionalidad) throws Exception;

	public List<FuncionalidadEventoPK> getAllEventos() throws Exception;
}
